package com.kfm.am;

import java.util.Objects;

public class Pet {
    private String name;
    public int age;

    public Pet() {
    }

    public Pet(String name, int age) {
        this.name = name;
        this.age = age;
    }

    private void privateMethod() {
        System.out.println("privateMethod");
    }

    public void publicMethod() {
        System.out.println("publicMethod");
    }

    public void info() {
        System.out.println("Pet info()");
    }

    public final void finalMethod() {
        System.out.println("finalMethod");
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        // 自动类型转换 由低到高
//        Pet pet = new Pet();
//        Object o = pet;
        // 强制类型转换 由高到低  (要转换的类型)变量名  instanceof
        System.out.println(obj instanceof Pet);
        System.out.println(obj.getClass());
        System.out.println(this.getClass());
        System.out.println(obj.getClass() == this.getClass());
        if (obj instanceof Pet) {
            Pet p1 = (Pet) obj;
            // 比较对象里面的每一个属性的值都相等
            // name(equals) 和 age(==)
            // 首先处理null值情况，如果两者都是null，就不会去执行 equals方 法
            if ((p1.name == null && this.name == null) || p1.name.equals(this.name)) {
                if (p1.age == this.age) {
                    return true;
                }
            }
        }
        return false;
        // 基本数据类型的自动转换
//        byte i = 1;
//        int age = i;
//        基本数据类型的强制转换
//        int a = 23;
//        byte c = (byte) a;
    }

    @Override
    public int hashCode() {
        return age * 16 + 1000;
    }
}
